package com.aaa.vegetablemarketexpress.dao;

import com.aaa.vegetablemarketexpress.entity.Cart;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @FileName: CartDao
 * @Description:
 * @Author: qxh
 * @CreateTime: 2025/9/18 14:40
 * @Version: 1.0.0
 */
public interface CartDao {
    /**
     * 插入购物车记录
     *
     * @param cart 购物车实体
     * @return 影响的行数
     */
    int insert(Cart cart);

    /**
     * 根据ID更新购物车记录
     *
     * @param cart 购物车实体
     * @return 影响的行数
     */
    int updateById(Cart cart);

    /**
     * 根据ID删除购物车记录
     *
     * @param cartId 购物车ID
     * @return 影响的行数
     */
    int deleteById(Long cartId);

    /**
     * 根据ID查询购物车记录
     *
     * @param cartId 购物车ID
     * @return 购物车实体
     */
    Cart selectById(Long cartId);

    /**
     * 根据用户ID查询购物车列表
     *
     * @param userId 用户ID
     * @return 购物车列表
     */
    List<Cart> selectByUserId(Long userId);

    /**
     * 根据用户ID和商品ID查询购物车记录
     *
     * @param userId    用户ID
     * @param productId 商品ID
     * @return 购物车实体
     */
    Cart selectByUserIdAndProductId(@Param("userId") Long userId, @Param("productId") Long productId);
    /**
     * 根据用户ID查询购物车详情（连表查询商品信息）
     *
     * @param userId 用户ID
     * @return 购物车详情列表
     */
    List<Cart> selectCartDetailsByUserId(Long userId);
        /**
         * 根据用户ID删除购物车记录
         * @param userId 用户ID
         * @return 删除的记录数
         */
        int deleteByUserId(@Param("userId") Long userId);

}
